package com.isczy.acl.helper;


import com.isczy.acl.entity.Permission;

import java.util.ArrayList;
import java.util.List;

/***
 * ***************************************
 * 功能描述:根据权限数据构建菜单数据
 * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:52】
 * @author modify:
 */
public class PermissionHelper {

    /***
     * ***************************************
     * 功能描述:使用递归方法建菜单
     * @param treeNodes
     * @return {@link List< Permission>}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:53】
     * @author modify:
     */
    public static List<Permission> build(List<Permission> treeNodes) {
        List<Permission> trees = new ArrayList<>();
        for (Permission treeNode : treeNodes) {
            if ("0".equals(treeNode.getPid())) {
                treeNode.setLevel(1);
                trees.add(findChildren(treeNode,treeNodes));
            }
        }
        return trees;
    }

    /***
     * ***************************************
     * 功能描述:递归查找子节点
     * @param treeNode
     * @param treeNodes
     * @return {@link Permission}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-26 14:53】
     * @author modify:
     */
    public static Permission findChildren(Permission treeNode,List<Permission> treeNodes) {
        treeNode.setChildren(new ArrayList<Permission>());
        for (Permission it : treeNodes) {
            if(treeNode.getId().equals(it.getPid())) {
                int level = treeNode.getLevel() + 1;
                it.setLevel(level);
                if (treeNode.getChildren() == null) {
                    treeNode.setChildren(new ArrayList<>());
                }
                treeNode.getChildren().add(findChildren(it,treeNodes));
            }
        }
        return treeNode;
    }
}
